package br.com.globalcode.clinicafacil.modelo.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.globalcode.clinicafacil.modelo.dao.exception.CreateDaoException;
import br.com.globalcode.clinicafacil.modelo.dao.exception.UpdateDaoException;
import br.com.globalcode.clinicafacil.modelo.entidade.Paciente;

public class PacienteJpaDao implements IPacienteDao {

	private EntityManagerFactory emf;
	
	
	public PacienteJpaDao() {
		
		emf = Persistence.createEntityManagerFactory("clinicaFacilPU");
	
	}
	
	
	
	@Override
	public void inserir(Paciente paciente) throws CreateDaoException {

		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		
		em.persist(paciente);
		
		em.getTransaction().commit();
		
	}

	@Override
	public void atualizar(Paciente paciente) throws UpdateDaoException {

		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		
		em.merge(paciente);
		
		em.getTransaction().commit();

		
	}

	@Override
	public void delete(Paciente paciente) {

		EntityManager em = emf.createEntityManager();
		em.getTransaction().begin();
		em.merge(paciente);
		em.remove(paciente);
		em.getTransaction().commit();		
		
	}

	@Override
	public List<Paciente> listarTodos() {
		
		EntityManager em = emf.createEntityManager();
		
		return em.createQuery( "select p from Paciente p" 
							, Paciente.class )
									.getResultList();
	}

}
